ネットワーク設定を変更してインスタンスへ接続出来なくなった場合の対処方法
困っていた内容
EC2インスタンスのOS側でネットワーク設定を変更したら、接続が途切れてしまいました。
どうしたら接続を回復出来るでしょうか?
前提
EC2インスタンスには ENI(仮想ネットワークインターフェース)がアタッチされており、その ENI に付与されたIPアドレスでEC2インスタンスは通信を行います。
インスタンス内のOS設定ではDHCP設定が標準となっておりますが、この ENI の情報が関連付けされるため、OS側ではIPアドレスの固定設定をする必要はありません。
OS側でIPアドレスの固定設定を行ってしまうと、そのインスタンスを基に作成したAMIを利用して新たなインスタンスを作成した場合等にENIとの不整合が生じ、通信が取れなくなってしまいます。
そのため、AWS環境ではOS側でのネットワーク設定はDHCP設定が推奨されます。
原因
前提条件にもある通り、OS側のネットワーク設定とENIの設定に不整合があると通信が取れなくなるため、DHCP設定が推奨されます。
ただし、インストールするソフトウェアによってはインストール条件に固定IPアドレス設定が必要。等の条件がある場合もあります。
他にもDHCP設定が許容できない場面も出てくるかもしれません。
その場合には固定IPアドレスを設定するしかありません。
しかし、ここで設定を間違ってしまうと、その時点でインスタンスとの通信が取れなくなってしまいます。
変更して…
反映して…
あっ
あっ…
修正したくても、インスタンスと通信が取れないため、修正することも出来ません。
もうバックアップから復元するしかない…と思うかもしれませんが、まだ方法はあります。
その方法をこれから紹介していきます。
対処方法
結論から言うと、セカンダリENIをアタッチし、そのセカンダリENI経由で通信する。となります。
今回、Windows環境で操作していますが、他のOSでもやることは変わりません。
以下、順を追って具体的に説明していきます。
1.ネットワークインターフェースの作成
セカンダリENIとなるネットワークインターフェースを作成していきます
EC2コンソール > ネットワークインターフェース
「ネットワークインターフェースの作成」ボタンを押します
プライマリENI(EC2インスタンスに最初からついているENI)と同じサブネット、セキュリティグループを指定して、ネットワークインターフェースの作成ボタンを押します
これでネットワークインターフェース(ENI)の作成が完了です。
2.EC2インスタンスへのアタッチ
先ほど作ったENIを早速通信が取れなくなったEC2へアタッチしていきましょう。
EC2コンソール > ネットワークインターフェース
先ほど作ったネットワークインターフェースを選択し、アクション > アタッチ を選択します
今回通信が取れなくなったEC2インスタンスを指定して、アタッチを押します
3.Elastic IPの割り当て
セカンダリENIに関連付けるElastic IPを割り当てます
EC2コンソール > Elastic IP
「Elastic IPの割り当て」ボタンを押します
割り当てボタンを押します
4.ネットワークインターフェースへの関連付け
用意したElastic IPをセカンダリENIに関連付けます
EC2コンソール > Elastic IP
先ほどの手順で作成したElastic IPを選択し、アクション > Elastic IP アドレスの関連付け を選択します
ネットワークインターフェース 、プライベートIPアドレス には今回作成したENIの情報を入力し、関連付けるを押します。
5.インスタンスへの通信確認
おっ、復活したようです。
セカンダリENIのパブリックIPアドレス宛に接続します
繋がりました!セカンダリENIの情報も確認できます。
プライマリENI側の設定もDHCP設定に戻しておきましょう。
これでプライマリENIのパブリックIPアドレスへの接続も復活しました。
後片付け
修正後、不要になったセカンダリENIは削除しておきましょう。
セカンダリENIで通信が取れたので、プライマリENI(元からあったENI)を消しても良いのでは?と思われるかもしれませんが、
プライマリENIは消せない仕様となっております。2つのENIが不要な場合は、プライマリENIを修正し、セカンダリENIを削除しましょう。
1.EC2インスタンスからのデタッチ
EC2コンソール > ネットワークインターフェース
セカンダリENIを選択し、アクション > デタッチ を選択します
2.ネットワークインターフェースの削除
EC2コンソール > ネットワークインターフェース
デタッチしたセカンダリENIを選択し、アクション > 削除 を選択します
3.Elastic IPの解放
EC2コンソール > Elastic IP
セカンダリENIに関連付けていたElastic IPを選択し、アクション > Elastic IPの解放 を選択します
最後に
今回ご紹介したのは接続が出来なくなってしまってからの対処方法となりますが、
OS側でネットワーク設定を変更する場合は、あらかじめ今回ご紹介したセカンダリENIをご用意して別の通信経路を確保しておくと突然通信が取れなくなって慌てることも少ないかと思います。是非お試しください。
参考資料
複数の IP アドレス - Amazon Elastic Compute Cloud
Elastic IP アドレス - Amazon Elastic Compute Cloud Elastic IP アドレスを割り当てる
Elastic IP アドレス - Amazon Elastic Compute Cloud Elastic IP アドレスをインスタンスまたはネットワークインターフェイスに関連付ける